Lazy Collections হল এমন ধরনের কালেকশন যা কেবল তখনই উপাদান বা মান গণনা বা তৈরি করে যখন সেগুলি প্রকৃতপক্ষে প্রয়োজন হয়। এটি Lazy Evaluation ধারণার উপর ভিত্তি করে কাজ করে, যার মাধ্যমে কালেকশনের উপাদানগুলো প্রয়োজন না হওয়া পর্যন্ত হিসাব করা বা তৈরি করা হয় না। Lazy Collections ব্যবহার করার মাধ্যমে আপনি মেমরি এবং প্রক্রিয়াকরণ সময় সাশ্রয় করতে পারেন, বিশেষত যখন আপনার বড় আকারের ডেটা স্ট্রাকচার বা সংগ্রহে কাজ করতে হয়।
Apache Commons Collections লাইব্রেরিতে কিছু Lazy Collection তৈরি করার জন্য ইউটিলিটি সরঞ্জাম সরবরাহ করা হয়, যা আপনার কাজকে আরও কার্যকরী করে তোলে।
Lazy Collections এমন কালেকশন যা অটো বা বিকল্পভাবে উপাদানগুলি রিট্রিভ করে এবং হিসাব করে, অর্থাৎ উপাদানগুলি তখনই তৈরি হয় যখন সেগুলি অ্যাক্সেস করা হয়। এর ফলে সম্পূর্ণ কালেকশন মেমরিতে লোড না হয়ে শুধুমাত্র প্রয়োজনীয় উপাদানগুলো লোড হয়।
এটি বড় কালেকশনগুলিতে বিশেষভাবে উপকারী, যেখানে আপনি বড় পরিসরের ডেটা প্রক্রিয়া না করেও নির্দিষ্ট ডেটা পেতে পারেন। উদাহরণস্বরূপ, যদি আপনার কাছে একটি বড় list থাকে তবে লেজি কালেকশন কেবল সেই উপাদানটি রিট্রিভ করবে যেটি আপনার প্রয়োজন এবং অন্য কোনো উপাদান রিট্রিভ করবে না।
Apache Commons Collections লাইব্রেরি Lazy Collections তৈরি করার জন্য LazyList
, LazyMap
, এবং অন্যান্য কাস্টম Lazy কোড ব্যবহার করে। এই লাইব্রেরি আপনাকে Lazy Collection বাস্তবায়ন করতে সহায়তা করে।
LazyList একটি বিশেষ ধরনের List যা উপাদানগুলোকে lazy load বা প্রক্রিয়া করে।
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.list.LazyList;
import org.apache.commons.collections4.functors.ConstantTransformer;
import java.util.List;
public class LazyListExample {
public static void main(String[] args) {
// Creating a LazyList that lazily transforms all elements to uppercase
List<String> lazyList = LazyList.decorate(ListUtils.lazyList(new java.util.ArrayList<>()), new ConstantTransformer("default"));
// Adding items lazily
lazyList.add("apple");
lazyList.add("banana");
// Accessing elements lazily
System.out.println(lazyList.get(0)); // Will print "apple"
System.out.println(lazyList.get(1)); // Will print "banana"
}
}
LazyList.decorate()
মেথডটি ব্যবহার করে একটি lazy list তৈরি করা হয়েছে। এটি একটি ArrayList ডেকোরেট করে এবং প্রতিটি নতুন উপাদানকে lazy load করবে।ConstantTransformer
ব্যবহার করা হয়েছে, যা lazy initialization এর মাধ্যমে default value প্রদান করে।LazyMap একটি বিশেষ ধরনের Map যা lazy load এর মাধ্যমে কীগুলির জন্য মান রিটার্ন করে। এটি মূলত LazyList
এর মতো কাজ করে, তবে এটি একটি Map ডেটা স্ট্রাকচার ব্যবহারের জন্য ডিজাইন করা হয়েছে।
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.collections4.map.LazyMap;
import org.apache.commons.collections4.functors.ConstantTransformer;
import java.util.HashMap;
import java.util.Map;
public class LazyMapExample {
public static void main(String[] args) {
// Creating a LazyMap that lazily transforms all keys
Map<String, String> lazyMap = LazyMap.decorate(new HashMap<String, String>(), new ConstantTransformer("default"));
// Adding key-value pairs lazily
lazyMap.put("name", "Alice");
lazyMap.put("age", "30");
// Accessing keys lazily
System.out.println(lazyMap.get("name")); // Will print "Alice"
System.out.println(lazyMap.get("age")); // Will print "30"
System.out.println(lazyMap.get("address")); // Will print "default"
}
}
LazyMap.decorate()
মেথডটি ব্যবহার করে একটি lazy map তৈরি করা হয়েছে। এখানে ConstantTransformer
ব্যবহার করা হয়েছে, যা একটি ডিফল্ট মান প্রদান করে যখন Map এ নির্দিষ্ট কীগুলির মান উপস্থিত না থাকে।address
কীগুলি রিটার্ন করতে চেয়েছি, যেটি মাপে নেই, তখন এটি ডিফল্ট মান প্রদান করেছে ("default")।Lazy Collections Apache Commons Collections লাইব্রেরির একটি শক্তিশালী বৈশিষ্ট্য যা মেমরি ও পারফরম্যান্স অপ্টিমাইজেশনের জন্য কার্যকর। LazyList এবং LazyMap ব্যবহার করে আপনি কেবলমাত্র প্রয়োজনীয় উপাদানগুলি লোড করতে পারবেন এবং বড় আকারের ডেটা সেটের সাথে কাজ করার সময় এটি কার্যকরী হতে পারে। তবে, এগুলির ব্যবহারের সময় complexity এবং thread safety এর প্রতি মনোযোগ দেওয়া প্রয়োজন।
common.read_more